
package carmadness.model;

/**
 * @author Szelei
 * @version 1.0
 * @created 10-Apr-2010 2:32:37 PM
 */
public class Bunny extends Rule
{
	private final int defaultTicksToToggle = 10;
	/**
	 * Hány órajelig marad azonos állapoban a lámpa.
	 */
	private int ticksToToggle = defaultTicksToToggle;

	/**
	 * Hat -e éppen a nyuszi.
	 */
	private boolean on = false;

	public Bunny()
	{

	}

	/**
	 * A Visitor minta szerinti accept metódus.
	 * 
	 * @param visitor
	 *            Egy IRuleVisitor interfészt megvalósító objektum.
	 */
	public void accept( IRuleVisitor visitor )
	{
		visitor.visitRule( this );
	}

	public void step()
	{
		--ticksToToggle;
		if ( ticksToToggle == 0 )
		{
			toggle();
			ticksToToggle = defaultTicksToToggle;
		}
	}

	/**
	 * Az ellenkezőjére változtatja a nyuszi állapotát.
	 */
	public void toggle()
	{
		on = !on;
	}

	/**
	 * Hat -e a nyuszi?
	 */
	public boolean isOn()
	{
		return on;
	}

	/**
	 * Visszaadja az állapotváltásig hátralévő óraütések számát.
	 */
	public int getTicksToToggle()
	{
		return ticksToToggle;
	}
}
